package store

import (
	"context"
	"simcard/model"
	"simcard/model/entity"
)

type ISimCard interface {
	// Create
	Create(ctx context.Context, e *entity.SimCard) (int64, error)

	// CreateInBatch
	CreateInBatch(ctx context.Context, m []*entity.SimCard, size int) error

	// Find
	Find(ctx context.Context, in *model.SimCardInfoRequest) (*entity.SimCard, error)

	// Update
	Update(ctx context.Context, id int64, updates map[string]interface{}) error

	// UpdateByCondition
	UpdateByCondition(ctx context.Context, id *model.UpdateSimCardByConditionRequest, updates map[string]interface{}) error

	// Delete
	Delete(ctx context.Context, in *model.SimCardDeleteRequest) error
	// List
	List(ctx context.Context, in *model.SimCardListRequest, opts ...model.QueryOptions) (int, []*entity.SimCard, error)
	// ExecTransaction
	ExecTransaction(ctx context.Context, callback func(ctx context.Context) error) error
}
